class Person {
    public name: string   // 类中、子类内的任何地方、外部 都能调用
    protected age: number  // 类中、子类内的任何地方都能调用,但外部不能调用
    private tel: number   // 类中可以调用，子类内的任何地方、外部都不可调用

    constructor(name: string, age:number, tel: number){
        this.name = name
        this.age = age
        this.tel = tel
    }
}

class Child extends Person {
    constructor(name: string, age: number, tel: number) {
        super(name, age, tel);
    }

    getName(){
        console.log(`我的name是${this.name},年龄${this.age}`) // "我的name是pengyuyan,年龄18"
        // console.log(`电话是${this.tel}`) // 类中可以调用，子类内的任何地方、外部都不可调用
        console.log(`年龄是${this.age}`)  // 类中可以调用  "年龄是18"
    }
}


const res = new Child('pengyuyan', 18, 133123456789)
console.log(res.name) // Domesy
// console.log(res.age) // 类中、子类内的任何地方都能调用,但外部不能调用
// console.log(res.tel) // 类中可以调用，子类内的任何地方、外部都不可调用
res.getName()

// 重载
class double{
    setNum(num: string);
    setNum(num: number);
    setNum(num:string | number){
        if(typeof num === 'string'){
            console.log(num + num)
        }else{
            console.log(num*2)
        }
    };
}

const res = new double()
res.setNum('1') // "11"
res.setNum(1) // 2
